/**
 * <h1>状态模式(State)</h1>
 * 
 * <pre>
 *   1.状态模式和策略模式的实现方法非常类似，都是利用多态把一些操作分配到一组相关的简单的类中，
 * 因此很多人认为这两种模式实际上是相同的。
 *   2.然而实际上，策略（如促销一种商品的策略）和状态（如同一个按钮来控制一个电梯的状态，
 * 又如手机界面中一个按钮来控制手机）是两种完全不同的思想。当我们对状态和策略进行建模时，这种
 * 差异会导致完全不同的问题。例如，对状态进行建模时，状态迁移是一个核心内容；然而，在选择策略
 * 时，迁移与此毫无关系。另外，策略模式允许一个客户选择或提供一种策略，而这种思想在状态模式中
 * 完全没有。
 *   3.应用场景（目的）也不一样，State模式重在强调对象内部状态的变化改变对象的行为，Strategy模
 *   式重在外部对策略的选择，策略的选择由外部条件决定，也就是说算法的动态的切换。但由于它们的
 *   结构是如此的相似，我们可以认为“状态模式是完全封装且自修改的策略模式”。即状态模式是封装
 *   对象内部的状态的，而策略模式是封装算法族的
 * </pre>
 * @author: chaoyang.ren  
 * @date:Jun 19, 2017  
 * @time:11:21:10 AM   
 * @email:chaoyang.ren@foxmail.com  
 * @version: 1.0
 */
package pattern.behavioral.state;